package com.yhgarden.bbs.mapper.system;

import com.yhgarden.bbs.entity.system.EntityProperty;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 表单字段
 * Created by caimb on 2017/4/27.
 */
public interface EntityPropertyMapper {
    /**
     * 创建表单字段
     * @param entityProperty 字段对象，参见ivring-share:com.dxtech.ivring.share.entity.entity.EntityProperty
     * @return
     */
    public int create(EntityProperty entityProperty);

    /**
     * 更新表单字段
     * @param entityProperty 字段对象，参见ivring-share:com.dxtech.ivring.share.entity.entity.EntityProperty
     * @return
     */
    public int update(EntityProperty entityProperty);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    public int batchDelete(@Param("ids") List<String> ids);

    /**
     * 删除
     * @param id
     * @return
     */
    public int delete(String id);

    /**
     * 根据表单id删除
     * @param entityId
     * @return
     */
    public int deleteByEntityId(@Param("entityId") String entityId);

    /**
     * 通过id获取表单字段
     * @param id
     * @return
     */
    public EntityProperty getById(String id);


    public EntityProperty getByIdMoreDetail(String id);

    /**
     * 通过表单id获取字段列表
     * @param entityId 表单id
     * @return
     */
    public List<EntityProperty> getByEntityId(String entityId);

    /**
     * 获取最后一个字段
     * @param entityId 表单id
     * @return
     */
    public EntityProperty getLastFieldByEntityId(String entityId);
    
    /**
     * 通过表名和字段名获取字段
     * @param tableName 表名
     * @param fieldName 字段名
     * @return 字段实体EntityProperty
     */
    public EntityProperty getByTableNameAndFieldName(@Param("tableName") String tableName, @Param("fieldName") String fieldName);


    /**
     * 分页获取所有（去除deleted的数据）字段
     * @param entityProperty 字段对象，参见ivring-share:com.dxtech.ivring.share.entity.entity.EntityProperty
     * @return 字段列表
     */
    public List<EntityProperty> query(@Param("example") EntityProperty entityProperty,
                                      @Param("order") String order,
                                      @Param("field") String field);

    /**
     * 分页获取所有（去除deleted的数据）字段
     * @param entityProperty 字段对象，参见ivring-share:com.dxtech.ivring.share.entity.entity.EntityProperty
     * @return 字段列表
     */
    public List<EntityProperty> queryMoreDetail(@Param("example") EntityProperty entityProperty,
                                                @Param("order") String order,
                                                @Param("field") String field);

    /**
     * 分页获取所有（去除deleted的数据）字段
     * @param entityProperty 字段对象，参见ivring-share:com.dxtech.ivring.share.entity.entity.EntityProperty
     * @return 字段列表
     */
    public List<EntityProperty> queryForList(@Param("example") EntityProperty entityProperty,
                                                @Param("order") String order,
                                                @Param("field") String field);


}
